package com.tanhua.dubbo.api;

import com.tanhua.domain.mg.Visitor;
import com.tanhua.dubbo.mg.VisitorsApi;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import java.util.List;

@Service
public class VisitorsApiImpl implements VisitorsApi {

    //注入mongoTemplate对象
    @Autowired
    private MongoTemplate mongoTemplate;
    /**
     * 如果用户没有登录时间 那么就按照访问时间倒序展示5条访客信息
     * @param currentUserId
     * @return
     */
    @Override
    public List<Visitor> queryRecentVisitorRecordsIfNull(Long currentUserId) {
        //查询条件 根据当前用户id--userId 查询访客表
        Query query = new Query();
        query.addCriteria(Criteria.where("userId").is(currentUserId));
        //按照访问的时间倒序查看5条记录
        query.limit(5).with(Sort.by(Sort.Direction.DESC, "date"));
        //查询记录
        return mongoTemplate.find(query, Visitor.class);
    }
    /**
     * 有记录了上次的登录时间 那么就按照上次访问时间到当前时间倒序查看5条记录
     * @param currentUserId
     * @return
     */
    @Override
    public List<Visitor> queryRecentVisitorRecords(Long currentUserId, long lastVisitTime) {
        //查询条件 根据当前用户id--userId以及上次登录时间 查询访客表
        Query query = new Query();
        query.addCriteria(Criteria.where("userId").is(currentUserId).and("date").gt(lastVisitTime));
        //按照访问的时间倒序查看5条记录
        query.limit(5).with(Sort.by(Sort.Direction.DESC, "date"));
        //查询记录
        return mongoTemplate.find(query, Visitor.class);
    }

}
